﻿using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    public class RespUserGetIdentityProcessInfo
    {
        /// <summary>
        /// 实名认证进展状态：no_start: 未认证(表示用户并未提交认证请求，认证尚未开始)identifying: 认证中(实名认证常常包括多个步骤，表示正在进行)
        /// checking: 审核中(用户选择了提交资料审核方式的认证，审核尚未完成，需等待审核反馈)success: 认证通过(整个实名认证进程结束并通过认证)
        /// failed: 认证不通过(整个实名认证进程结束但未通过认证，可能是某个步骤认证失败或审核拒绝)。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identProcessStatus",
            Required = Newtonsoft.Json.Required.Always)]
        public string IdentProcessStatus { get; set; }

        /// <summary>
        /// 实名认证状态更新时间，以便了解该实名认证进程是多久以前的发生的事情。Unix标准时间戳，精确到毫秒。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identUpdateTime",
            Required = Newtonsoft.Json.Required.AllowNull)]
        public string IdentUpdateTime { get; set; }

        /// <summary>
        /// 用户实名认证时所选择的认证方案：
        /// mobile: 实名手机号认证 (该方案校验的是用户在电信运营商绑定的真实姓名、身份证号码、手机号及对应的短信验证码)
        /// face: 人脸识别认证 (该方案校验的是用户的真实姓名、身份证号码和人脸比对)
        /// bank: 个人银行卡认证 (该方案校验的是用户在银行绑定的真实姓名、身份证号码、银行卡卡号、预留在银行的手机号及对应的短信验证码)
        /// offline: 人工审核认证 (该方案主要为特殊人群提供的人工审核通道，如部分用户因为特殊原因，无法在其他方案下完成认证。例如：手机不可用、人脸比对不成功、外国人等)。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identMethod",
            Required = Newtonsoft.Json.Required.AllowNull)]
        public string IdentMethod { get; set; }

        /// <summary>
        /// 如果identProcessStatus是认证不通过，则该参数可能可以说明原因。特别是当人工审核不通过时，主要通过该参数返回不通过的原因，方便用户了解和判断如何才能通过认证。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identFailedReason",
            Required = Newtonsoft.Json.Required.AllowNull)]
        public string IdentFailedReason { get; set; }
    }
}